package com.lottery.game.core.modules.service.app;

import com.lottery.game.core.modules.entity.game.CheckResult;
import com.lottery.game.core.modules.entity.user.GameUser;
import com.lottery.game.core.modules.entity.user.GameUserAccount;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Description TODO
 * @Classname GameUserAccountService
 * @Date 2019/4/30 9:36
 * @Author liusc <liushicheng1993@vip.qq.com>
 * @Version 1.0
 */
public interface GameUserAccountService  {
    /**
     *
     * 功能描述: 通过传入的信息判断是否已绑定过账户
     *
     * @param: GameUserAccount gameUserAccount
     * @return: GameUserAccount gameUserAccount
     * @auther: 1
     * @date: 2019/4/3 16:05
     */
    GameUserAccount getAccount(GameUserAccount gameUserAccount);

    GameUserAccount get(String id);

    List<GameUserAccount> findList(GameUserAccount gameUserAccount);

    @Transactional(readOnly = false)
    void save(GameUserAccount gameUserAccount);

    @Transactional(readOnly = false)
    void delete(GameUserAccount gameUserAccount);

    /**
     * 校验提现条件
     *
     * @param gameUser
     * @return
     */
    CheckResult getDownCheck(GameUser gameUser, String account);

    /**
     * 更改用户余额，同时写一条暂扣余额的账变记录
     *
     * @param gameUser 用户
     * @param change   余额改变的值
     * @param reason   原因
     */
    void updateGameBalane(GameUser gameUser, Double change, String reason);
}
